﻿using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ServerPA.CompletPort.Util
{
    class LogUtil
    {
        public static void PrintlnLog(string step, string msg, string className) {

            StackTrace st = new StackTrace();
            SaveLog(System.DateTime.Now.ToString() + "____步骤:{" + step + "}____{ 描述: ____" + msg + "  }", className);
        }


        public static void Println(Exception ex, string className)
        {
            StackTrace st = new StackTrace();
            SaveLog(System.DateTime.Now.ToString() + "____{____函数名:" + st.GetFrame(2).GetMethod().Name + "()  }____{ 异常信息:" + ex.Message + "  }", className);
        }

        public static void LogToFile(Exception ex, string className)
        {
            StackTrace st = new StackTrace();
            SaveLog(System.DateTime.Now.ToString() + "____{____函数名:" + st.GetFrame(2).GetMethod().Name + "()  }____{ 异常信息:" + ex.Message + "  }", className);
        }

        public static void LogTest(Exception ex, string className)
        {
            StackTrace st = new StackTrace();
            SaveLogTest(System.DateTime.Now.ToString() + "____{____函数名:" + st.GetFrame(2).GetMethod().Name + "()  }____{ 异常信息:" + ex.Message + "  }", className);
        }


        public static void LogFile(Exception ex, string FileName)
        {
            StackTrace st = new StackTrace();
            SaveLog(System.DateTime.Now.ToString() + "____{____函数名:" + st.GetFrame(2).GetMethod().Name + "()  }____{ 异常信息:" + ex.Message + "  }");
        }

        public static void SaveLog(string log)
        {
            ////如果文件不存在，则创建；存在则覆盖
            ////该方法写入字符数组换行显示
            //System.IO.File.WriteAllLines(@"C:\testDir\test.txt", lines, Encoding.UTF8);

            ////如果文件不存在，则创建；存在则覆盖
            //string strTest = "该例子测试一个字符串写入文本文件。";
            //System.IO.File.WriteAllText(@"C:\testDir\test1.txt", strTest, Encoding.UTF8);

            //在将文本写入文件前，处理文本行
            //StreamWriter一个参数默认覆盖
            //StreamWriter第二个参数为false覆盖现有文件，为true则把文本追加到文件末尾
            string path = System.Environment.CurrentDirectory;
            using (System.IO.StreamWriter file = new System.IO.StreamWriter(path + "\\Log_Exception.txt", true))
            {
                //file.Write(log);//直接追加文件末尾，不换行
                file.WriteLine(log);// 直接追加文件末尾，换行   
            }
        }

        //public static void SaveLog(string log, string fileName)
        //{
        //    ////如果文件不存在，则创建；存在则覆盖
        //    ////该方法写入字符数组换行显示
        //    //System.IO.File.WriteAllLines(@"C:\testDir\test.txt", lines, Encoding.UTF8);

        //    ////如果文件不存在，则创建；存在则覆盖
        //    //string strTest = "该例子测试一个字符串写入文本文件。";
        //    //System.IO.File.WriteAllText(@"C:\testDir\test1.txt", strTest, Encoding.UTF8);

        //    //在将文本写入文件前，处理文本行
        //    //StreamWriter一个参数默认覆盖
        //    //StreamWriter第二个参数为false覆盖现有文件，为true则把文本追加到文件末尾
        //    string path = System.Environment.CurrentDirectory;
        //    using (System.IO.StreamWriter file = new System.IO.StreamWriter(path + "\\Log\\Log_" + fileName + ".txt", true))
        //    {
        //        //file.Write(log);//直接追加文件末尾，不换行
        //        file.WriteLine(log);// 直接追加文件末尾，换行   
        //    }
        //}

        public static void SaveLog(string log, string fileName)
        {
            ////如果文件不存在，则创建；存在则覆盖
            ////该方法写入字符数组换行显示
            //System.IO.File.WriteAllLines(@"C:\testDir\test.txt", lines, Encoding.UTF8);

            ////如果文件不存在，则创建；存在则覆盖
            //string strTest = "该例子测试一个字符串写入文本文件。";
            //System.IO.File.WriteAllText(@"C:\testDir\test1.txt", strTest, Encoding.UTF8);

            //在将文本写入文件前，处理文本行
            //StreamWriter一个参数默认覆盖
            //StreamWriter第二个参数为false覆盖现有文件，为true则把文本追加到文件末尾

            string path = System.Environment.CurrentDirectory + "\\Log";

            if (!File.Exists(path) == true) {

                //FileStream fs = new FileStream(path, FileMode.CreateNew);
                //StreamWriter sw = new StreamWriter(fs);
                System.IO.Directory.CreateDirectory(path);

            }

            using (System.IO.StreamWriter file = new System.IO.StreamWriter(path + "\\Log_" + fileName + ".txt", true))
            {
                //file.Write(log);//直接追加文件末尾，不换行
                file.WriteLine(log);// 直接追加文件末尾，换行   
            }

        }




        public static void SaveDeviceCodeLog(string log)
        {
            ////如果文件不存在，则创建；存在则覆盖
            ////该方法写入字符数组换行显示
            //System.IO.File.WriteAllLines(@"C:\testDir\test.txt", lines, Encoding.UTF8);

            ////如果文件不存在，则创建；存在则覆盖
            //string strTest = "该例子测试一个字符串写入文本文件。";
            //System.IO.File.WriteAllText(@"C:\testDir\test1.txt", strTest, Encoding.UTF8);

            //在将文本写入文件前，处理文本行
            //StreamWriter一个参数默认覆盖
            //StreamWriter第二个参数为false覆盖现有文件，为true则把文本追加到文件末尾
            string path = System.Environment.CurrentDirectory;
            using (System.IO.StreamWriter file = new System.IO.StreamWriter("D:\\DeivceCodeLog\\DeviceCode.txt", true))
            {
                //file.Write(log);//直接追加文件末尾，不换行
                file.WriteLine(log);// 直接追加文件末尾，换行   
            }

        }
        public static void SaveLogTest(string log, string filename)
        {
            string path = System.Environment.CurrentDirectory;
            using (System.IO.StreamWriter file = new System.IO.StreamWriter("F:\\DeivceCodeLog\\" + filename + ".txt", true))
            {
                //file.Write(log);//直接追加文件末尾，不换行
                file.WriteLine(log);// 直接追加文件末尾，换行   
            }

        }
    }
}
